package anthology.interview;
//https://www.nowcoder.com/discuss/666667673882738688

import java.util.Scanner;

/**
 * 在一个神秘的森林中，K小姐、小蓝和小绿正在进行一场捉迷藏的游戏。他们的当前位置分别用字母表示，其他位置可能是空地（用 '*' 表示）或障碍物（用 '#' 表示）。
 * 寻找方可以每秒移动到相邻的空地，而躲藏方则无法移动。当寻找方移动到躲藏方的位置时，躲藏方就被找到，游戏结束。
 *
 * 在这场游戏中，K小姐、小蓝和小绿都希望能尽快找到对方。
 * 现在，我们需要计算出当他们分别作为寻找方时，能够获胜所需的最少时间。如果某个寻找方无法找到任何躲藏方，则输出 -1。
 */
public class _02捉迷藏游戏的胜利时间 {
    private static boolean charactersContains(char c, char[] characters) {
        for (char ch : characters) {
            if (ch == c) return true;
        }
        return false;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        char[] c = {'R','B','G'};
        int n = s.length();
        for(char ch : c){
            // 找到当前角色的位置
            int idx = s.indexOf(ch);
            int i = idx - 1, j = idx + 1;
            boolean found = false;
            int count = 1;

            while (i >= 0 || j < n){
                // 检查左边是否找到其他角色
                if(i >= 0 && charactersContains(s.charAt(i),c)){
                    found = true;
                    break;
                }
                // 如果左边是空地，继续向左移动
                if(i >= 0 && s.charAt(i) == '*') i--;
                // 检查右边是否找到其他角色
                if (j < n && charactersContains(s.charAt(j), c)) {
                    found = true;
                    break;
                }
                // 如果右边是空地，继续向右移动
                if (j < n && s.charAt(j) == '*') j++;

                count++;
            }
            // 如果没有找到其他角色，返回 -1
            if (!found) count = -1;

            System.out.print(count + " ");
        }
    }
}
